package com.huahai.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huahai.pojo.dto.spaceuser.SpaceUserAddDTO;
import com.huahai.pojo.dto.spaceuser.SpaceUserQueryDTO;
import com.huahai.pojo.entity.SpaceUser;
import com.huahai.pojo.vo.spaceuser.SpaceUserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
* @author huahai
* @description 针对表【space_user(空间用户关联)】的数据库操作Service
* @createDate 2025-08-11 16:24:01
*/
public interface SpaceUserService extends IService<SpaceUser> {

    /**
     * 创建团队空间用户信息
     * @param spaceUserAddDTO 创建团队空间用户参数
     * @return 创建的空间id
     */
    Long addSpaceUser(SpaceUserAddDTO spaceUserAddDTO);

    /**
     * spaceUser类型转换脱敏（单个团队空间）
     * @param spaceUser 空间用户对象
     * @param request 请求
     * @return SpaceUserVO 脱敏后的团队空间用户信息
     */
    SpaceUserVO getSpaceUserVO(SpaceUser spaceUser, HttpServletRequest request);

    /**
     * 获取团队空间用户信息封装
     * @param spaceUserList 团队空间用户列表
     * @return List<SpaceUserVO> 脱敏后的团队空间用户信息列表
     */
    List<SpaceUserVO> getSpaceUserVOList(List<SpaceUser> spaceUserList);

    /**
     * 封装团队空间查询条件QueryWrapper
     * @param spaceUserQueryDTO 团队空间用户查询条件
     * @return QueryWrapper<SpaceUser> 查询条件
     */
    QueryWrapper<SpaceUser> getQueryWrapper(SpaceUserQueryDTO spaceUserQueryDTO);

    /**
     * 团队空间用户信息的基本校验
     * @param spaceUser 空间对象
     */
    void validSpaceUser(SpaceUser spaceUser,Boolean add);

}
